// 引入加密模块
const bcrypt = require('bcrypt');
const { User } = require('../../model/user');
module.exports = async (req, res, next) => {
    // 接受客户端传递过来的请求参数
    // req.body拿到的是post请求参数  id是通过get参数传递的需要query
    const { username, email, role, state, password } = req.body;
    // 即将要修改的用户id
    const id = req.query.id;
    // 根据id查询用户信息
    // res.send(body.password);
    let user = await User.findOne({ _id: id });
    // 密码比对
    // 第一个参数是客户端传递过来的密码。
    // 第二个参数是数据库中的加密后的密码
    const isValid = await bcrypt.compare(password, user.password);
    if (isValid) {
        // res.send('ok');
        // 将用户信息更新到数据库中,但是不能将密码更新到数据库中，这里的密码只是用来比对
        await User.updateOne({ _id: id }, {
            username: username,
            email: email,
            role: role,
            state: state
        });
        // 重定向页面 到用户列表页面
        res.redirect('/admin/user');
    } else {
        // 密码比对失败 重定向到编辑页面
        let obj = { path: '/admin/user-edit', message: '密码比对失败，不能进行用户信息的修改', id: id }
        next(JSON.stringify(obj));
    };
    // res.send(user);
}